package com.hjh.core.activity

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.elvishew.xlog.XLog
import com.hjh.permission.PermissionUtil

/**
 * @author： hjh
 * @createDate： 2025/6/12 9:53
 * @description： 无界面 Activity，用于启动应用和初始化
 * @qq： 3472903821
 * @version: 1.0
 */
open class BaseNoDisplayActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        XLog.i("应用入口启动")

        start()
        XLog.i("后台服务启动")

        finish()
        XLog.i("应用入口关闭")
    }

    open fun start() {}


    /**
     * 统一请求权限方法
     *
     * @param storage       是否请求 Android 11+ 的“所有文件访问权限”
     * @param readStorage   是否请求读外部存储权限（Android 6~10）
     * @param writeStorage  是否请求写外部存储权限（Android 6~10）
     * @param location      是否请求精确位置权限
     * @param backgroundLocation 是否请求后台位置权限（Android 10+）
     * @param camera        是否请求相机权限
     * @param audio         是否请求录音权限
     * @param phoneState    是否请求读取设备状态权限
     * @param phoneNumbers  是否请求读取电话号码权限
     * @param readContacts  是否请求读取联系人权限
     * @param writeContacts 是否请求写联系人权限
     * @param sendSms       是否请求发送短信权限
     * @param receiveSms    是否请求接收短信权限
     * @param readSms       是否请求读取短信权限
     * @param readCalendar  是否请求读取日历权限
     * @param writeCalendar 是否请求写日历权限
     * @param bodySensors   是否请求访问身体传感器权限
     * @param bluetoothScan 是否请求蓝牙扫描权限（Android 12+）
     * @param bluetoothConnect 是否请求蓝牙连接权限（Android 12+）
     * @param postNotifications 是否请求发送通知权限（Android 13+）
     * @param onGranted     所有权限被授予时的回调
     * @param onDenied      部分或全部权限被拒绝时的回调，带有被拒权限列表
     */
    fun requestPermission(
        storage: Boolean = false,
        readStorage: Boolean = false,
        writeStorage: Boolean = false,
        location: Boolean = false,
        backgroundLocation: Boolean = false,
        camera: Boolean = false,
        audio: Boolean = false,
        phoneState: Boolean = false,
        phoneNumbers: Boolean = false,
        readContacts: Boolean = false,
        writeContacts: Boolean = false,
        sendSms: Boolean = false,
        receiveSms: Boolean = false,
        readSms: Boolean = false,
        readCalendar: Boolean = false,
        writeCalendar: Boolean = false,
        bodySensors: Boolean = false,
        bluetoothScan: Boolean = false,
        bluetoothConnect: Boolean = false,
        postNotifications: Boolean = false,
        onGranted: (() -> Unit)? = null,
        onDenied: ((denied: MutableList<String>) -> Unit)? = null
    ) {
        PermissionUtil.request(
            this@BaseNoDisplayActivity,
            storage,
            readStorage,
            writeStorage,
            location,
            backgroundLocation,
            camera,
            audio,
            phoneState,
            phoneNumbers,
            readContacts,
            writeContacts,
            sendSms,
            receiveSms,
            readSms,
            readCalendar,
            writeCalendar,
            bodySensors,
            bluetoothScan,
            bluetoothConnect,
            postNotifications,
            onGranted,
            onDenied
        )
    }
}
